1. The Field of the Invention
The present invention relates to data broadcast systems. More specifically, the present invention relates to methods, systems and computer program products for generating a data stream of a specified bandwidth for broadcast to one or more client systems.
2. Background and Related Art
In general, broadcasting involves transmitting the same data from one source to multiple clients using a common bandwidth. Broadcasting data occurs in many contexts, including television broadcast over public airways, audio and video signals broadcast over cable and satellite systems, and various of electronic content broadcast over the Internet. Broadcasting often involves a one-way communication channel. Limitation to one-way communication is not a requirement to broadcast data, but often allows for more efficient use of available bandwidth. Furthermore, in some situations, including broadcast television and satellite systems, it may not be practical or feasible for clients to transmit data over the same channel through which they receive data.
Broadcasting over a one-way communication channel, however, presents certain challenges. For example, with a one-way communication path, a data sender does not receive any acknowledgement from an intended data receiver that the data has, in fact, been received. Because of this uncertainty and depending on the importance of the data, a sender may retransmit data in an effort to increase the probability that the data is received. The frequency of the retransmissions may be termed the “retransmission frequency.”
While some sources provide static data, or in other words, data that generally does not change between successive retransmissions, other sources provide dynamic data. Dynamic data changes on a relatively regular basis and must be refreshed periodically from the source to assure that a client has current data. The frequency at which dynamic data is refreshed may be termed the “refresh frequency” and is distinct from the retransmission frequency.
In addition to static and dynamic data, some data may be real-time in nature and designed for immediate consumption by a receiving client. For example, a client may be running an application that presents real-time data for sporting events in progress. The real-time data may include team and/or player names, status information regarding an event's progress (e.g., time remaining or played, inning, lap, etc.), statistical information relevant to the event, etc. Although the data certainly has value that lasts beyond the sporting event, its most significant value and intended purpose is providing real-time information.
Independent of whether data is static, dynamic, or real-time, at any given client various applications may be executing and consuming data concurrently. For these applications to operate properly, it may be important to deliver data to more than one application at once. In some broadcast systems, the complexity of retransmitting static data, refreshing dynamic data, broadcasting real-time data, allowing simultaneous delivery of data, and doing so efficiently within a fixed bandwidth, has proved to be a daunting task. The solution generally has been to organize all data to be broadcast in a carousel of some sort, with all data essentially being treated equally. As the carousel proceeds, data is either retransmitted or refreshed according to the sequence that it is placed in the carousel. Because data in the carousel is treated equally, any data that should be transmitted in real-time waits for whatever data is ahead of it in the carousel.
Another problem found in some broadcast systems relates to limited flexibility in selecting arbitrary sources of data for broadcast. Generally, data to be broadcast first must be copied from the arbitrary source into the carousel. Among other things, copying the data itself into the carousel makes using arbitrary third-party data providers somewhat more complicated and may require significant storage resources.